﻿using Message;
using System;
using System.Collections.Generic;

namespace Server.Net
{
    public class ProtoDic
    {
        private static List<int> _protoId = new List<int>();
        private static List<Type> _protoType = new List<Type>();

        static ProtoDic()
        {
            _protoId.Add(1001);
            _protoType.Add(typeof(C2SRegister));
            _protoId.Add(1002);
            _protoType.Add(typeof(S2CRegisterRet));

            _protoId.Add(1003);
            _protoType.Add(typeof(C2SLogin));
            _protoId.Add(1004);
            _protoType.Add(typeof(S2CLoginRet));

            _protoId.Add(1005);
            _protoType.Add(typeof(C2SHeatBeat));
            _protoId.Add(1006);
            _protoType.Add(typeof(S2CHeatBeat));

            _protoId.Add(1007);
            _protoType.Add(typeof(C2SLogout));
            _protoId.Add(1008);
            _protoType.Add(typeof(S2CLogoutRet));

            _protoId.Add(1009);
            _protoType.Add(typeof(C2SChat));
            _protoId.Add(1010);
            _protoType.Add(typeof(S2CChat));

            _protoId.Add(1011);
            _protoType.Add(typeof(C2SAddFriend));
            _protoId.Add(1012);
            _protoType.Add(typeof(S2CAddFriend));

            _protoId.Add(1013);
            _protoType.Add(typeof(C2SAddFriendRet));
            _protoId.Add(1014);
            _protoType.Add(typeof(S2CAddFriendRet));

            _protoId.Add(1015);
            _protoType.Add(typeof(C2SDelFriend));
            _protoId.Add(1016);
            _protoType.Add(typeof(S2CDelFriend));

            _protoId.Add(1017);
            _protoType.Add(typeof(C2SDelFriendRet));
            _protoId.Add(1018);
            _protoType.Add(typeof(S2CDelFriendRet));

            _protoId.Add(1019);
            _protoType.Add(typeof(C2SGetPlayerList));
            _protoId.Add(1020);
            _protoType.Add(typeof(S2CGetPlayerList));

            _protoId.Add(1021);
            _protoType.Add(typeof(C2SMove));
            _protoId.Add(1022);
            _protoType.Add(typeof(S2CMoves));

            _protoId.Add(1023);
            _protoType.Add(typeof(C2SCreatRole));
            _protoId.Add(1024);
            _protoType.Add(typeof(S2CCreatRoleRet));

            _protoId.Add(1025);
            _protoType.Add(typeof(C2SDelRole));
            _protoId.Add(1026);
            _protoType.Add(typeof(S2CDelRoleRet));

            _protoId.Add(1027);
            _protoType.Add(typeof(C2SGetRoles));
            _protoId.Add(1028);
            _protoType.Add(typeof(S2CGetRolesRet));

        }

        public static Type GetProtoTypeByProtoId(int protoId)
        {
            int index = _protoId.IndexOf(protoId);
            return _protoType[index];
        }

        public static int GetProtoIdByProtoType(Type type)
        {
            int index = _protoType.IndexOf(type);
            return _protoId[index];
        }

        public static bool ContainProtoId(int protoId)
        {
            if (_protoId.Contains(protoId))
            {
                return true;
            }
            return false;
        }

        public static bool ContainProtoType(Type type)
        {
            if (_protoType.Contains(type))
            {
                return true;
            }
            return false;
        }
    }
} 